home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / Lists.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  10.9 KB  |  384 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Lists.h
  3.  
  4.      Contains:    List Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __LISTS__
  19. #define __LISTS__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __CONTROLS__
  25. #include <Controls.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if PRAGMA_ONCE
  31. #pragma once
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_STRUCT_ALIGN
  43.     #pragma options align=mac68k
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45.     #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47.     #pragma pack(2)
  48. #endif
  49.  
  50. typedef Point                             Cell;
  51. typedef Rect                             ListBounds;
  52. typedef char                             DataArray[32001];
  53. typedef char *                            DataPtr;
  54. typedef DataPtr *                        DataHandle;
  55. typedef CALLBACK_API( short , ListSearchProcPtr )(Ptr aPtr, Ptr bPtr, short aLen, short bLen);
  56. typedef CALLBACK_API( Boolean , ListClickLoopProcPtr )(void );
  57. /*
  58.     WARNING: ListClickLoopProcPtr uses register based parameters under classic 68k
  59.              and cannot be written in a high-level language without 
  60.              the help of mixed mode or assembly glue.
  61. */
  62. typedef STACK_UPP_TYPE(ListSearchProcPtr)                         ListSearchUPP;
  63. typedef REGISTER_UPP_TYPE(ListClickLoopProcPtr)                 ListClickLoopUPP;
  64.  
  65.  
  66. struct ListRec {
  67.     Rect                             rView;
  68.     GrafPtr                         port;
  69.     Point                             indent;
  70.     Point                             cellSize;
  71.     ListBounds                         visible;
  72.     ControlHandle                     vScroll;
  73.     ControlHandle                     hScroll;
  74.     SInt8                             selFlags;
  75.     Boolean                         lActive;
  76.     SInt8                             lReserved;
  77.     SInt8                             listFlags;
  78.     long                             clikTime;
  79.     Point                             clikLoc;
  80.     Point                             mouseLoc;
  81.     ListClickLoopUPP                 lClickLoop;
  82.     Cell                             lastClick;
  83.     long                             refCon;
  84.     Handle                             listDefProc;
  85.     Handle                             userHandle;
  86.     ListBounds                         dataBounds;
  87.     DataHandle                         cells;
  88.     short                             maxIndex;
  89.     short                             cellArray[1];
  90. };
  91. typedef struct ListRec ListRec;
  92.  
  93. typedef ListRec *                        ListPtr;
  94. typedef ListPtr *                        ListHandle;
  95. /* ListRef is obsolete.  Use ListHandle. */
  96. typedef ListHandle                         ListRef;
  97.  
  98.  
  99.  
  100. enum {
  101.     lDoVAutoscroll                = 2,
  102.     lDoHAutoscroll                = 1,
  103.     lOnlyOne                    = -128,
  104.     lExtendDrag                    = 64,
  105.     lNoDisjoint                    = 32,
  106.     lNoExtend                    = 16,
  107.     lNoRect                        = 8,
  108.     lUseSense                    = 4,
  109.     lNoNilHilite                = 2
  110. };
  111.  
  112.  
  113. enum {
  114.     lDoVAutoscrollBit            = 1,
  115.     lDoHAutoscrollBit            = 0,
  116.     lOnlyOneBit                    = 7,
  117.     lExtendDragBit                = 6,
  118.     lNoDisjointBit                = 5,
  119.     lNoExtendBit                = 4,
  120.     lNoRectBit                    = 3,
  121.     lUseSenseBit                = 2,
  122.     lNoNilHiliteBit                = 1
  123. };
  124.  
  125.  
  126.  
  127. enum {
  128.     lInitMsg                    = 0,
  129.     lDrawMsg                    = 1,
  130.     lHiliteMsg                    = 2,
  131.     lCloseMsg                    = 3
  132. };
  133.  
  134.  
  135. typedef CALLBACK_API( void , ListDefProcPtr )(short lMessage, Boolean lSelect, Rect *lRect, Cell lCell, short lDataOffset, short lDataLen, ListHandle lHandle);
  136. typedef STACK_UPP_TYPE(ListDefProcPtr)                             ListDefUPP;
  137. enum { uppListSearchProcInfo = 0x00002BE0 };                     /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  138. enum { uppListClickLoopProcInfo = 0x00000012 };                 /* register 1_byte:D0 Func() */
  139. enum { uppListDefProcInfo = 0x000EBD80 };                         /* pascal no_return_value Func(2_bytes, 1_byte, 4_bytes, 4_bytes, 2_bytes, 2_bytes, 4_bytes) */
  140. #define NewListSearchProc(userRoutine)                             (ListSearchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListSearchProcInfo, GetCurrentArchitecture())
  141. #define NewListClickLoopProc(userRoutine)                         (ListClickLoopUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListClickLoopProcInfo, GetCurrentArchitecture())
  142. #define NewListDefProc(userRoutine)                             (ListDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListDefProcInfo, GetCurrentArchitecture())
  143. #define CallListSearchProc(userRoutine, aPtr, bPtr, aLen, bLen)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppListSearchProcInfo, (aPtr), (bPtr), (aLen), (bLen))
  144. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  145.     #pragma parameter __D0 CallListClickLoopProc(__A0)
  146.     Boolean CallListClickLoopProc(ListClickLoopUPP routine) = 0x4E90;
  147. #else
  148.     #define CallListClickLoopProc(userRoutine)                     CALL_ZERO_PARAMETER_UPP((userRoutine), uppListClickLoopProcInfo)
  149. #endif
  150. #define CallListDefProc(userRoutine, lMessage, lSelect, lRect, lCell, lDataOffset, lDataLen, lHandle)  CALL_SEVEN_PARAMETER_UPP((userRoutine), uppListDefProcInfo, (lMessage), (lSelect), (lRect), (lCell), (lDataOffset), (lDataLen), (lHandle))
  151.  
  152.  
  153.  
  154.  
  155. EXTERN_API( ListHandle )
  156. LNew                            (const Rect *            rView,
  157.                                  const ListBounds *        dataBounds,
  158.                                  Point                     cSize,
  159.                                  short                     theProc,
  160.                                  WindowPtr                 theWindow,
  161.                                  Boolean                 drawIt,
  162.                                  Boolean                 hasGrow,
  163.                                  Boolean                 scrollHoriz,
  164.                                  Boolean                 scrollVert)                            THREEWORDINLINE(0x3F3C, 0x0044, 0xA9E7);
  165.  
  166. EXTERN_API( void )
  167. LDispose                        (ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0028, 0xA9E7);
  168.  
  169. EXTERN_API( short )
  170. LAddColumn                        (short                     count,
  171.                                  short                     colNum,
  172.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0004, 0xA9E7);
  173.  
  174. EXTERN_API( short )
  175. LAddRow                            (short                     count,
  176.                                  short                     rowNum,
  177.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0008, 0xA9E7);
  178.  
  179. EXTERN_API( void )
  180. LDelColumn                        (short                     count,
  181.                                  short                     colNum,
  182.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0020, 0xA9E7);
  183.  
  184. EXTERN_API( void )
  185. LDelRow                            (short                     count,
  186.                                  short                     rowNum,
  187.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0024, 0xA9E7);
  188.  
  189. EXTERN_API( Boolean )
  190. LGetSelect                        (Boolean                 next,
  191.                                  Cell *                    theCell,
  192.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x003C, 0xA9E7);
  193.  
  194. EXTERN_API( Cell )
  195. LLastClick                        (ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0040, 0xA9E7);
  196.  
  197. EXTERN_API( Boolean )
  198. LNextCell                        (Boolean                 hNext,
  199.                                  Boolean                 vNext,
  200.                                  Cell *                    theCell,
  201.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0048, 0xA9E7);
  202.  
  203. EXTERN_API( Boolean )
  204. LSearch                            (const void *            dataPtr,
  205.                                  short                     dataLen,
  206.                                  ListSearchUPP             searchProc,
  207.                                  Cell *                    theCell,
  208.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0054, 0xA9E7);
  209.  
  210. EXTERN_API( void )
  211. LSize                            (short                     listWidth,
  212.                                  short                     listHeight,
  213.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0060, 0xA9E7);
  214.  
  215. EXTERN_API( void )
  216. LSetDrawingMode                    (Boolean                 drawIt,
  217.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x002C, 0xA9E7);
  218.  
  219. EXTERN_API( void )
  220. LScroll                            (short                     dCols,
  221.                                  short                     dRows,
  222.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0050, 0xA9E7);
  223.  
  224. EXTERN_API( void )
  225. LAutoScroll                        (ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0010, 0xA9E7);
  226.  
  227. EXTERN_API( void )
  228. LUpdate                            (RgnHandle                 theRgn,
  229.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0064, 0xA9E7);
  230.  
  231. EXTERN_API( void )
  232. LActivate                        (Boolean                 act,
  233.                                  ListHandle             lHandle)                            TWOWORDINLINE(0x4267, 0xA9E7);
  234.  
  235. EXTERN_API( void )
  236. LCellSize                        (Point                     cSize,
  237.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0014, 0xA9E7);
  238.  
  239. EXTERN_API( Boolean )
  240. LClick                            (Point                     pt,
  241.                                  short                     modifiers,
  242.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0018, 0xA9E7);
  243.  
  244. EXTERN_API( void )
  245. LAddToCell                        (const void *            dataPtr,
  246.                                  short                     dataLen,
  247.                                  Cell                     theCell,
  248.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x000C, 0xA9E7);
  249.  
  250. EXTERN_API( void )
  251. LClrCell                        (Cell                     theCell,
  252.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x001C, 0xA9E7);
  253.  
  254. EXTERN_API( void )
  255. LGetCell                        (void *                    dataPtr,
  256.                                  short *                dataLen,
  257.                                  Cell                     theCell,
  258.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0038, 0xA9E7);
  259.  
  260. EXTERN_API( void )
  261. LRect                            (Rect *                    cellRect,
  262.                                  Cell                     theCell,
  263.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x004C, 0xA9E7);
  264.  
  265. EXTERN_API( void )
  266. LSetCell                        (const void *            dataPtr,
  267.                                  short                     dataLen,
  268.                                  Cell                     theCell,
  269.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0058, 0xA9E7);
  270.  
  271. EXTERN_API( void )
  272. LSetSelect                        (Boolean                 setIt,
  273.                                  Cell                     theCell,
  274.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x005C, 0xA9E7);
  275.  
  276. EXTERN_API( void )
  277. LDraw                            (Cell                     theCell,
  278.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0030, 0xA9E7);
  279.  
  280.  
  281. EXTERN_API( void )
  282. LGetCellDataLocation            (short *                offset,
  283.                                  short *                len,
  284.                                  Cell                     theCell,
  285.                                  ListHandle             lHandle)                            THREEWORDINLINE(0x3F3C, 0x0034, 0xA9E7);
  286.  
  287.  
  288. #if CGLUESUPPORTED
  289. EXTERN_API_C( void )
  290. laddtocell                        (const void *            dataPtr,
  291.                                  short                     dataLen,
  292.                                  const Cell *            theCell,
  293.                                  ListHandle             lHandle);
  294.  
  295. EXTERN_API_C( void )
  296. lclrcell                        (const Cell *            theCell,
  297.                                  ListHandle             lHandle);
  298.  
  299. EXTERN_API_C( void )
  300. lgetcelldatalocation            (short *                offset,
  301.                                  short *                len,
  302.                                  const Cell *            theCell,
  303.                                  ListHandle             lHandle);
  304.  
  305. EXTERN_API_C( void )
  306. lgetcell                        (void *                    dataPtr,
  307.                                  short *                dataLen,
  308.                                  const Cell *            theCell,
  309.                                  ListHandle             lHandle);
  310.  
  311. EXTERN_API_C( ListHandle )
  312. lnew                            (const Rect *            rView,
  313.                                  const ListBounds *        dataBounds,
  314.                                  Point *                cSize,
  315.                                  short                     theProc,
  316.                                  WindowPtr                 theWindow,
  317.                                  Boolean                 drawIt,
  318.                                  Boolean                 hasGrow,
  319.                                  Boolean                 scrollHoriz,
  320.                                  Boolean                 scrollVert);
  321.  
  322. EXTERN_API_C( void )
  323. lrect                            (Rect *                    cellRect,
  324.                                  const Cell *            theCell,
  325.                                  ListHandle             lHandle);
  326.  
  327. EXTERN_API_C( void )
  328. lsetcell                        (const void *            dataPtr,
  329.                                  short                     dataLen,
  330.                                  const Cell *            theCell,
  331.                                  ListHandle             lHandle);
  332.  
  333. EXTERN_API_C( void )
  334. lsetselect                        (Boolean                 setIt,
  335.                                  const Cell *            theCell,
  336.                                  ListHandle             lHandle);
  337.  
  338. EXTERN_API_C( void )
  339. ldraw                            (const Cell *            theCell,
  340.                                  ListHandle             lHandle);
  341.  
  342. EXTERN_API_C( Boolean )
  343. lclick                            (Point *                pt,
  344.                                  short                     modifiers,
  345.                                  ListHandle             lHandle);
  346.  
  347. EXTERN_API_C( void )
  348. lcellsize                        (Point *                cSize,
  349.                                  ListHandle             lHandle);
  350.  
  351. #endif  /* CGLUESUPPORTED */
  352.  
  353. #if OLDROUTINENAMES
  354. #define LDoDraw(drawIt, lHandle) LSetDrawingMode(drawIt, lHandle)
  355. #define LFind(offset, len, theCell, lHandle) LGetCellDataLocation(offset, len, theCell, lHandle)
  356. #if CGLUESUPPORTED
  357. #define lfind(offset, len, theCell, lHandle) lgetcelldatalocation(offset, len, theCell, lHandle)
  358. #endif  /* CGLUESUPPORTED */
  359.  
  360. #endif  /* OLDROUTINENAMES */
  361.  
  362.  
  363.  
  364. #if PRAGMA_STRUCT_ALIGN
  365.     #pragma options align=reset
  366. #elif PRAGMA_STRUCT_PACKPUSH
  367.     #pragma pack(pop)
  368. #elif PRAGMA_STRUCT_PACK
  369.     #pragma pack()
  370. #endif
  371.  
  372. #ifdef PRAGMA_IMPORT_OFF
  373. #pragma import off
  374. #elif PRAGMA_IMPORT
  375. #pragma import reset
  376. #endif
  377.  
  378. #ifdef __cplusplus
  379. }
  380. #endif
  381.  
  382. #endif /* __LISTS__ */
  383.  
  384.